# 第 4 章 记忆系统：三层存储与五类内容

「它记得我」。这是用户对 WorkBuddy 最常报告的惊讶，也是最多的抱怨来源——记住了不该记的，忘了该记的，或者记的东西开始干扰新任务。这一章把「记忆」这个词拆开：WorkBuddy 的记忆不是一个东西，是三层存储、五类内容、一套治理规则（限额、蒸馏、覆盖）的总和。理解了结构，「为什么它记得/为什么它乱记」就都有了答案。

读完本章，你应能说出三层记忆各自的位置、读写权限和限额，知道什么内容会进哪层，并能动手查看和清理自己的记忆。

## 4.1 先看规则原文：一段随每次请求注入的说明书

WorkBuddy 自己的记忆机制说明，写在系统提示词的公共片段里（第 5 章讲过拼装机制）。这段文件的存在本身就很说明问题——**记忆系统不只是存储，还包括一份发给模型的使用规则**。规则要点如下（据本机 5.3.13 文件归纳）：

三层结构，权限各不相同。第一层云端记忆分两半：一半是服务器生成的用户画像，会话开始时注入，本地只读——文件缓存在 `~/.workbuddy/memory/`，你手动改了也会被下次同步覆盖；另一半是历史会话检索工具，需要时向服务器发起搜索，不占请求上下文。第二层是用户级本地记忆，就是那个 `MEMORY.md` 文件：全项目共享，写入限额每次会话四千字符，由模型在你明确说「记住这个」时更新。第三层是工作区记忆，只在当前项目生效：每天一个日期文件（追加式，不许改历史），加一份精炼的长期笔记（限额三千字符）；超过三十天的日志要求按主题蒸馏进长期笔记后删除。

配套还有官方的内容分类学，来自工程复盘长文：五类记忆——稳定事实、知识背景、行为信号、表达偏好、会话延续。值得注意的不是这五类本身，而是一个刻意的设计：**程序性记忆（怎么做事情的方法论）被排除在长期记忆之外**。怎么做事归技能系统管（第 9 章），记忆只管「你是谁、你知道什么、你偏好什么」。两个系统泾渭分明，这是很多人配置失败的根源——把该写成技能的方法论塞进了记忆，结果每次召回都不完整。

![三层记忆的位置、权限与限额](/workbuddy-harness/fig-04.png)

*图 4-1：三层记忆的位置、权限与限额。*

## 4.2 存储位置与文件形态

把三层落到磁盘上：

```
~/.workbuddy/
├── MEMORY.md                 ← 用户级本地记忆（第二层）
├── memory/
│   └── <用户ID>_memory.md    ← 云端画像的本地只读缓存（第一层A）
└── （各项目内）
    └── .workbuddy/memory/
        ├── 2026-08-15.md     ← 工作区每日日志（第三层）
        └── MEMORY.md         ← 工作区长期笔记（第三层）
```

动手看一眼自己的：

```
cat ~/.workbuddy/MEMORY.md
```

很多人的这个文件短得出奇——几条偏好而已。这不是坏了，是设计使然：云端的画像记忆承担了大头，本地文件只放「必须逐字遵守的硬规则」。官方文档对记忆的说明是：由模型自动从会话提取、注入系统提示词、每晚整理。

另有一个历史彩蛋：数据目录里还有个拼写成 `memery` 的目录，装着另一套记忆文件。它是另一条产品线的兼容组件（第 13 章讲这段生态渊源），平时不参与 WorkBuddy 主记忆循环，但它的存在解释了为什么有些老教程会提到两个记忆文件。

## 4.3 治理规则：限额、蒸馏与覆盖

三层各自的治理逻辑值得细看，因为「记忆失灵」大多栽在这里。

云端画像的治理在服务器侧：自动提取、每晚整理，你不可直接编辑。它最容易出现的问题是「画像过时」——你三个月前的项目偏好还在影响现在的对话。对策不是删文件（删了会重建），而是在对话里明确纠正，让新信号进画像。

用户级 MEMORY.md 的治理是限额制的：四千字符每次会话。这个设计的意图是逼记忆保持精炼——它是硬规则清单，不是笔记本。实践中它的失败模式是「写了但没被读」：模型更新了文件，但下次拼装时这段内容排在请求靠后位置，权重不足。对策是把最关键的规则放在文件开头，且保持每条一行。

工作区记忆的治理最有工程味：日志追加式（不许改写历史，保证据链），长期笔记限额，三十天强制蒸馏。这其实是一套小型的知识管理流水线——日志是流水，笔记是库存，蒸馏是盘点。**看懂这套流水线，你就看懂了所有 Agent 记忆系统的通用范式**。

## 4.4 实战：三个高频问题的记忆侧答案

**「它总记得我不要的东西」**：定位到具体层。问它「你对我的印象是什么」，回答里的内容多半来自云端画像；在对话里明确说「以后不要再用这个信息」，让纠正信号进画像。用户级文件里的过时条目直接编辑删除——这是三层里你唯一能安全手改的。

**「我让它记住，它却忘了」**：检查三个可能——写入超限（这次会话的四千字符用完了）；写进了工作区层但你在别的项目问（层级不匹配）；内容被判定为会话延续类（只在本会话有效，这是正确行为不是故障）。

**「换个项目它就失忆了」**：不是故障，是设计。工作区记忆按项目隔离，跨项目的是用户级和云端层。想要跨项目复用的偏好，说「记住，以后所有项目都……」引导它写入用户级文件。

## 4.5 补充机制：会话检索与双轨对照

第一层记忆还有一个容易漏掉的部件：历史会话检索工具。它不占请求上下文，模型需要时主动调用，由服务端在全量历史会话里做检索排序。使用时机的设计很克制——提示词片段里写明的典型场景是用户明确提到过去的某次讨论（「我们之前聊的那个方案」），且当前上下文里找不到。**记忆注入（画像常驻）与记忆检索（按需召回）是两套机制**：前者是每次请求的固定成本，后者是按使用的边际成本。理解这个区分，你就明白为什么「它有时记得有时不记得」——常驻的画像过时会失真，按需的检索措辞不当就召不回。想让过去的讨论可召回，当时就把关键结论写进对话明确语句里。

双轨对照也补一笔实测细节：memory 与 memery 两个目录下的文件名都带同一串用户标识，后缀分别是 `_memory.md` 与 `_memery.md`，各配一份伴随文件（备份或状态）。两套文件并存且互不引用——一个服务 WorkBuddy 自己的记忆循环，一个保留另一产品线的格式。这是生态兼容在存储层的直接物证，也是你排查「记忆怎么有两份」疑问的答案。

## 4.6 边界

本章机制的版本边界：三层结构与限额数字来自 5.3.13 本机模板文件，模板随市场更新可能调整；云端画像的提取与整理逻辑在服务器侧，本书只能观测其本地缓存与行为效果，不声称了解其内部实现；`memory/` 缓存文件含个人信息，书中示例均已脱敏，你分享截图时同理。

下一章往上走：记忆是通过什么管道进入请求的——系统提示词的拼装机制，全书机制部分的核心一章。
